home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / smail-3.1.28 / src / extern.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-09-20  |  18.6 KB  |  511 lines

  1. /* @(#)src/extern.h    1.34 9/20/92 18:44:03 */
  2.  
  3. /*
  4.  *    Copyright (C) 1987, 1988 Ronald S. Karr and Landon Curt Noll
  5.  *    Copyright (C) 1992  Ronald S. Karr
  6.  * 
  7.  * See the file COPYING, distributed with smail, for restriction
  8.  * and warranty information.
  9.  */
  10.  
  11. /*
  12.  * extern.h:
  13.  *    externals used by the smail program
  14.  */
  15. extern int errno;            /* previous system error value */
  16.  
  17. /*
  18.  * External variables used in the smail program
  19.  */
  20. /* external variables defined in alloc.c */
  21. extern struct block *perm;        /* permanent allocation block */
  22. extern int x_dont_panic;                /* dont panic in X_CHECK() */
  23.  
  24. /* external variables defined in config.c */
  25. extern char *visible_name;        /* hostname used in outgoing addrs */
  26. extern char *visible_domains;        /* domain used in outgoing headers */
  27. extern char *uucp_name;            /* hostname used in !-routes */
  28. extern char *hostnames;            /* list of other local host names */
  29. extern char *more_hostnames;        /* additional list of hostnames */
  30. extern long max_message_size;        /* max size of message body */
  31. extern char *grades;            /* mapping of precedence to grade */
  32. extern int nobody_uid;            /* user id for access permission */
  33. extern int nobody_gid;            /* group id for access permission */
  34. extern char *nobody;            /* name of nobody user */
  35. extern char *log_fn;            /* name of information log file */
  36. extern char *panic_fn;            /* name of panic log file */
  37. extern char *cons_fn;            /* name of console device file */
  38. extern char *spool_dirs;        /* names of spooling directories */
  39. extern int spool_mode;            /* mode for spool files */
  40. extern int lock_mode;            /* mode for lock files */
  41. extern int log_mode;            /* mode for system log files */
  42. extern int message_log_mode;        /* mode for per-message log files */
  43. extern int spool_grade;            /* default spool grade character */
  44. extern int open_retries;        /* max open retries on startup file */
  45. extern int open_interval;        /* sleep between open retries */
  46. extern char *config_file;        /* config file name */
  47. extern char *director_file;        /* directors file name */
  48. extern char *router_file;        /* routers file name */
  49. extern char *method_dir;        /* directory for non-/ method files */
  50. extern char *transport_file;        /* transports file name */
  51. extern char *qualify_file;              /* domain qualification file name */
  52. extern char *retry_file;                /* address retry control file name */
  53. extern char *smail_lib_dir;        /* default config file directory */
  54. extern char *smail_util_dir;        /* default smail utility directory */
  55. extern char *received_field;        /* Received: field string */
  56. extern char *message_id_field;        /* Message_Id: field string */
  57. extern char *date_field;        /* Date: field string */
  58. extern char *from_field;        /* From: field string */
  59. extern char *return_path_field;        /* Return-Path: field string */
  60. extern char *smail;            /* location of the smail program */
  61. extern double max_load_ave;        /* spool mail > this load agerage */
  62. extern char *trusted;            /* : list of trusted users */
  63. extern char *trusted_groups;        /* : list of trusted groups */
  64. extern unsigned message_bufsiz;        /* size of message buffers */
  65. extern int hit_table_len;        /* #entries in address hit table */
  66. extern int flock_mailbox;        /* TRUE to use lock_fd_wait() macro */
  67. extern int fnlock_retries;        /* retries for lock_file() creat */
  68. extern int fnlock_interval;        /* retry intervals for lock_file() */
  69. extern int fnlock_mode;            /* mode for lock_file() lockfiles */
  70. extern int lock_by_name;        /* TRUE to use spool lockfiles */
  71. extern int queue_only;            /* true to queue but not deliver */
  72. extern int max_hop_count;        /* fail if hop_count exceeds this */
  73. extern char *delivery_mode_string;    /* string naming delivery mode */
  74. extern char *smart_user;        /* default user for smartuser driver */
  75. extern char *smart_path;        /* default path for smarthost driver */
  76. extern char *smart_transport;        /* transport for smarthost driver */
  77. extern char *second_config_file;    /* secondary configuration file */
  78. extern char *copying_file;        /* pathname to COPYING file */
  79. extern int auto_mkdir;            /* TRUE to auto create directories */
  80. extern int auto_mkdir_mode;        /* the mode for auto directories */
  81. extern int require_configs;        /* TRUE to require config files */
  82. extern char *postmaster_address;    /* default addr of postmaster */
  83. extern char *smtp_banner;        /* smtp startup banner message */
  84. extern int smtp_debug;            /* allow DEBUG command in SMTP */
  85. extern int smtp_accept_max;        /* max simultaneous SMTPs to accept */
  86. extern int smtp_accept_queue;        /* simultaneous SMTPs until queueonly */
  87. extern char *sender_env_variable;    /* env variable naming user */
  88. extern int switch_percent_and_bang;    /* switch precedence of % and ! */
  89. extern int error_copy_postmaster;    /* copy postmaster on errors */
  90. extern long retry_interval;        /* default delivery retry interval */
  91. extern long retry_duration;        /* default delivery retry duration */
  92. extern long host_lock_timeout;        /* timeout for host exclusivity lock */
  93. extern long smtp_receive_command_timeout; /* timeout for receiving SMTP cmds */
  94. extern long smtp_receive_message_timeout; /* timeout for receiving SMTP msg */
  95. extern char *auth_domains;        /* authoritative domain list */
  96. #ifdef GLOTZNET
  97. extern int tzoffset;            /* timezone offset for glotznet host */
  98. extern int tznodst;            /* true if no DST for glotznet host */
  99. #endif /* GLOTZNET */
  100.  
  101. /* external variables defined in default.c */
  102. extern struct director *directors;    /* configured directors */
  103. extern struct router *routers;        /* configured routers */
  104. extern struct transport *transports;    /* configured transports */
  105. extern struct transport *builtin_transports; /* builtin transports */
  106.  
  107. /* external variables defined in direct.c */
  108. extern int cached_directors;        /* TRUE if cache_directors() called */
  109.  
  110. /* external variables defined in drivertab.c */
  111. #ifdef DIRECT_H
  112. extern struct direct_driver direct_drivers[]; /* compiled director drivers */
  113. #endif
  114. #ifdef ROUTE_H
  115. extern struct route_driver route_drivers[]; /* compiled router drivers */
  116. #endif
  117. #ifdef TRANSPORT_H
  118. extern struct transport_driver transport_drivers[]; /* transport drivers */
  119. #endif
  120.  
  121. /* external variables defined in header.c */
  122. extern struct list *header;        /* list of header fields */
  123.  
  124. /* external variables defined in ldinfo.c */
  125. extern int compile_num;
  126. extern char *compile_date;
  127.  
  128. /* external variables defined in log.c */
  129. extern FILE *msg_logfile;        /* open stream to per-message log */
  130.  
  131. /* external variables defined in main.c */
  132. extern int islocal;            /* TRUE if mail originated locally */
  133. extern int exitvalue;            /* call exit with this value */
  134. extern char *program;            /* argv[0] from main */
  135. extern char *sender;            /* sender of message */
  136. extern char *local_sender;        /* local sender of message */
  137. extern int error_sender;        /* TRUE if special sender <> given */
  138. extern char *sender_name;        /* full name of sender */
  139. extern int debug;            /* debugging level, 0 is off */
  140. extern int dont_deliver;        /* if TRUE, don't actually deliver */
  141. extern int process_queue;        /* process spooled files */
  142. extern unsigned queue_interval;        /* process queues at this interval */
  143. extern int hop_count;            /* hop count so far for message */
  144. extern int do_aliasing;            /* do aliasing for local addresses */
  145. extern int extract_addresses;        /* get recipients from header */
  146. #ifdef MAIN_H
  147. extern enum op_mode operation_mode;    /* mode of operation */
  148. extern enum dot_usage dot_usage;    /* how do we treat . on input */
  149. extern enum deliver_mode deliver_mode;    /* foreground, background or queued */
  150. extern enum er_proc error_processing;    /* method of displaying errors */
  151. extern enum prog_type prog_type;    /* type of program we are running as */
  152. #endif    /* MAIN_H */
  153. extern int me_too;            /* sender allowed in aliases */
  154. extern struct addr *recipients;        /* list of recipient addresses */
  155. extern char *primary_name;        /* primary local name from hostnames */
  156. extern FILE *errfile;            /* file to write debug messages to */
  157. extern int real_uid;            /* saved real uid before ruid setup */
  158. extern char **save_argv;        /* saved pointer to arguments */
  159. extern int some_deferred_addrs;        /* don't unlink spool file */
  160.                     /* as some addrs were deferred */
  161. extern int prog_euid;            /* effective uid of program */
  162. extern int prog_egid;            /* effective gid of program */
  163. extern int force_zero_exitvalue;    /* if TRUE always exit with status 0 */
  164. extern int call_defer_message;        /* if TRUE must call defer_message() */
  165. extern int sender_is_trusted;        /* TRUE if sender is a trusted user */
  166. extern char *sender_host;        /* name of sender's host */
  167. extern char *sender_host_addr;        /* inet address of sender's host */
  168. extern char *sender_proto;        /* name of sender's sending protocol */
  169. extern char *sender_program;        /* name of program that spooled msg */
  170. #ifdef GLOTZNET
  171. extern char *glotzhost;            /* name of glotznet host */
  172. #endif /* GLOTZNET */
  173.  
  174. /* external variables defined in modes.c */
  175. extern int daemon_pid;            /* pid of daemon process */
  176.  
  177. /* external variables defined in notify.c */
  178. extern int send_to_postmaster;        /* set TRUE to mail to postmaster */
  179. extern int return_to_sender;        /* set TRUE to mail log to sender */
  180.  
  181. /* external variables defined in parse.c */
  182. extern char *off;            /* boolean off attribute value */
  183. extern char *on;            /* boolean on attribute value */
  184.  
  185. /* external variables defined in queue.c */
  186. extern int msg_grade;            /* grade level for this message */
  187. extern long msg_body_size;        /* size of message body */
  188.  
  189. /* external variables defined in resolve.c */
  190. extern struct hash_table *hit_table;    /* table to recognize address hits */
  191.  
  192. /* external variables defined in route.c */
  193. extern int cached_routers;        /* TRUE if cache_routers() called */
  194.  
  195. /* external variables defined in spool.c */
  196. extern char *message_id;        /* unique string ID for message */
  197. extern char *spool_dir;            /* directory used to spool message */
  198. extern char *spool_fn;            /* basename of spool file */
  199. extern char *input_spool_fn;        /* name in input/ directory */
  200. extern int spoolfile;            /* open spool file */
  201. extern char *lock_fn;            /* name of lock file for spool_fn */
  202. extern char *msg_buf;            /* i/o buffer for spool file */
  203. extern char *msg_ptr;            /* read placeholder in msg_buf */
  204. extern char *msg_max;            /* last valid char in msg_buf */
  205. extern char *end_msg_buf;        /* end of msg_buf */
  206. extern long msg_foffset;        /* file offset for msg_buf contents */
  207. extern long msg_size;            /* size of spool file */
  208.  
  209. /* external variables defined in version.c */
  210. extern char *version_number;        /* string defining version number */
  211. extern char *release_date;        /* the date for this release */
  212. extern char *patch_number;        /* most recent patch number */
  213. extern char *patch_date;        /* patch date */
  214. extern char *bat;            /* the proper bat for this release */
  215.  
  216. /* external variables defined in transports.c */
  217. extern char *path_to_sender;        /* uucp-style route to sender */
  218. extern int cached_transports;        /* TRUE if cache_transports() called */
  219.  
  220. /* external variables defined in route.c */
  221. extern int cached_routers;        /* TRUE if cache_routers() called */
  222.  
  223.  
  224. /*
  225.  * External functions used in the smail program
  226.  */
  227. /* external functions defined in addr.c */
  228. extern char *preparse_address();
  229. extern int parse_address();
  230. extern char *address_token();
  231. extern char *back_address_token();
  232. extern int mixed_address();
  233. extern char *build_uucp_route();
  234. extern char *build_partial_uucp_route();
  235. extern void split_addr_list();
  236. extern void strip_rfc822_comments();
  237. extern struct addr *alloc_addr();
  238. extern void insert_addr_list();
  239. extern struct addr *addr_sort();
  240. extern struct error *note_error();
  241.  
  242. /* external functions defined in alloc.c */
  243. extern char *xmalloc();
  244. extern char *xrealloc();
  245. extern void xfree();
  246. extern char *bmalloc();
  247. extern char *brealloc();
  248. extern void bfree();
  249. extern struct block *alloc_block();
  250. extern void realloc_block();
  251. extern void free_block();
  252.  
  253. /* external functions defined in direct.c */
  254. extern void direct_local_addrs();
  255. extern void verify_local_addrs();
  256. extern void director_user_info();
  257. extern struct director *find_director();
  258. extern struct direct_driver *find_direct_driver();
  259. extern void cache_directors();
  260. extern void finish_directors();
  261. extern char *read_director_file();
  262.  
  263. /* external functions defined in expand.c */
  264. extern char *expand_string();
  265. extern char **build_cmd_line();
  266. extern char *lc_fold();
  267. extern char *uc_fold();
  268.  
  269. /* external functions defined in field.c */
  270. extern char *tokenize();
  271. extern char *detokenize();
  272. extern char *process_field();
  273. extern void dump_tokens();
  274.  
  275. /* external functions defined in hash.c */
  276. extern int add_to_hash();
  277. extern int lookup_in_hash();
  278. extern struct hash_table *new_hash_table();
  279. extern void write_hash_table();
  280. #ifdef ETHEREAL_HASHDATA
  281. extern struct hash *delete_from_hash();
  282. extern struct hash *replace_in_hash();
  283. extern struct hash *store_in_hash();
  284. extern struct hash *walk_hash();
  285. extern void free_hash_element();
  286. extern void free_hash_table();
  287. #endif    /* ETHEREAL_HASHDATA */
  288.  
  289. /* external functions defined in header.c */
  290. extern char *process_header();
  291. extern int read_header();
  292. extern int write_header();
  293. extern int parse_precedence();
  294.  
  295. /* external functions defined in log.c */
  296. extern void open_system_logs();
  297. extern void open_msg_log();
  298. extern void close_msg_log();
  299. extern void unlink_msg_log();
  300. #ifdef ANSI_C
  301. extern void panic(int, char *, ...);
  302. extern void write_log(int, char *, ...);
  303. #else
  304. extern void panic();
  305. extern void write_log();
  306. #endif
  307. extern void send_log();
  308. extern char *scan_msg_log();
  309.  
  310. /* external functions defined in lookup.c */
  311. extern int open_database();
  312. extern void close_database();
  313. extern int lookup_database();
  314.  
  315. /* external functions defined in main.c */
  316. extern void main();
  317. extern void initialize_state();
  318. extern void process_args();
  319.  
  320. /* external functions defined in modes.c */
  321. extern void build_host_strings();
  322. extern void compute_nobody();
  323. extern void input_signals();
  324. extern void processing_signals();
  325. extern void deliver_signals();
  326. extern void test_addresses();
  327. extern void perform_deliver_mail();
  328. extern void deliver_mail();
  329. extern void daemon_mode();
  330. extern void noop_mode();
  331. extern void verify_addresses();
  332. extern void print_version();
  333. extern void print_copying_file();
  334. extern void print_variables();
  335. extern void print_queue();
  336. extern void smtp_mode();
  337. extern int process_spool_file();
  338. extern int fork_wait();
  339.  
  340. /* external functions defined in notify.c */
  341. extern void build_host_strings();
  342. extern void compute_nobody();
  343. extern void input_signals();
  344. extern void process_signals();
  345. extern void delivery_signals();
  346. extern void test_addresses();
  347. extern void perform_deliver_mail();
  348. extern void deliver_mail();
  349. extern void verify_addresses();
  350. extern void run_queue();
  351. extern void print_version();
  352. extern void print_queue();
  353. extern void smtp_mode();
  354. extern void batch_smtp_mode();
  355.  
  356. /* external functions defined in notify.c */
  357. extern void fail_delivery();
  358. extern void defer_delivery();
  359. extern void succeed_delivery();
  360. extern void error_delivery();
  361. extern struct addr *process_msg_log();
  362. extern void notify();
  363.  
  364. /* external functions defined in parse.c */
  365. extern char *parse_entry();
  366. extern struct attribute *parse_config();
  367. extern struct attribute *parse_table();
  368. extern char *read_entry();
  369.  
  370. /* external functions defined in pathto.c */
  371. extern void pathto();
  372. extern void optto();
  373. extern void uupath();
  374.  
  375. /* external functions defined in pwcache.c */
  376. extern struct passwd *getpwbyname();
  377. extern struct group *getgrbyname();
  378. extern struct passwd *getpwbyuid();
  379. extern struct group *getgrbygid();
  380.  
  381. /* external functions defined in qualify.c */
  382. extern char *read_qualify_file();
  383. extern char *qualify_domain();
  384.  
  385. /* external functions defined in queue.c */
  386. extern int queue_message();
  387. extern char **read_message();
  388. extern int write_body();
  389. extern void check_grade();
  390. extern void log_incoming();
  391. extern char **scan_spool_dirs();
  392. extern int swallow_smtp();
  393.  
  394. /* external functions defined in resolve.c */
  395. extern void resolve_addr_list();
  396. extern int islocalhost();
  397.  
  398. /* external functions defined in qualify.c */
  399. extern char *read_qualify_file();
  400. extern char *qualify_domain();
  401.  
  402. /* external functions defined in retry.c */
  403. extern char *read_retry_file();
  404. extern struct addr *retry_addr_before();
  405. extern struct addr *retry_addr_after();
  406. extern void retry_addr_finished();
  407. extern int retry_host_lock();
  408. extern void retry_host_unlock();
  409.  
  410. /* external functions defined in route.c */
  411. extern void route_remote_addrs();
  412. extern void verify_remote_addrs();
  413. extern char *match_end_domain();
  414. extern char *match_end();
  415. extern char *is_suffix();
  416. extern void route_driver_finish();
  417. extern struct router *find_router();
  418. extern struct route_driver *find_route_driver();
  419. extern void cache_routers();
  420. extern void finish_routers();
  421. extern char *read_router_file();
  422. extern struct method *read_method_file();
  423.  
  424. /* external functions defined in smailconf.c */
  425. extern char *read_config_file();
  426. extern void print_config_variable();
  427. extern char *read_standard_file();
  428. extern char *fill_attributes();
  429. extern struct attr_table *find_attribute();
  430. extern void add_config_stat();
  431. extern int is_newconf();
  432. extern char *make_lib_fn();
  433.  
  434. /* external functions defined in smtprecv.c */
  435. extern char **receive_smtp();
  436.  
  437. /* external functions defined in spool.c */
  438. extern int creat_spool();
  439. extern int write_spool();
  440. extern int open_spool();
  441. extern void close_spool();
  442. extern void unlink_spool();
  443. extern int seek_spool();
  444. extern int tell_spool();
  445. extern int send_spool();
  446. extern int read_spool();
  447. extern void log_spool_errors();
  448. extern int new_grade();
  449. extern void defer_message();
  450. extern long message_date();
  451.  
  452. /* external functions defined in string.c */
  453. extern int strcmpic();
  454. extern int strncmpic();
  455. extern int strip();
  456. extern char *strcolon();
  457. extern int is_string_in_list();
  458. extern char *strerrno();
  459. extern char *strsysexit();
  460. extern void str_printf();
  461. extern char *xprintf();
  462. extern int dprintf();
  463. extern long c_atol();
  464. extern char *base62();
  465. extern void str_cat();
  466. extern void str_ncat();
  467. #ifndef HAVE_VFPRINTF
  468. extern int vfprintf();
  469. #endif
  470. extern long ivaltol();
  471. extern char *ltoival();
  472. extern char *copy();
  473. extern char *rcopy();
  474.  
  475. /* external functions defined in sysdep.c */
  476. extern char *time_stamp();
  477. extern char *get_arpa_date();
  478. extern int get_local_year();
  479. extern char *unix_date();
  480. extern void compute_local_sender();
  481. extern void getfullname();
  482. extern FILE *fopen_as_user();
  483. extern int lock_file();
  484. extern void unlock_file();
  485. extern char *compute_hostname();
  486. extern int open_child();
  487. extern int close_child();
  488. extern void close_all();
  489. extern char *scan_dir();
  490. extern int touch();
  491. extern int fsetsize();
  492.  
  493. /* external functions defined in transport.c */
  494. extern struct assign_transport *assign_transports();
  495. extern void call_transports();
  496. extern int write_message();
  497. extern char *get_sender_addr();
  498. extern char *remote_from_line();
  499. extern char *local_from_line();
  500. extern struct transport *find_transport();
  501. extern struct transport_driver *find_transport_driver();
  502. extern void cache_transports();
  503. extern void finish_transports();
  504. extern char *read_transport_file();
  505.  
  506. /* external functions defined in verify.c */
  507. extern void verify_addr_list();
  508.  
  509. /* external functions defined in version.c */
  510. extern char *version();
  511.